﻿<!doctype html>
<html lang="en">
	<head>
		<title>JavaScript Patterns</title>
		<meta charset="utf-8">
	</head>
	<body>
		<script>
			/* Title: Private Properties and Methods
			 Description: JavaScript doesn't have special syntax for private members, you can implement them using a closure
			 */

			function Gadget() {
				// private member
				var name = 'iPod';
				// public function
				this.getName = function () {
					return name;
				};
			}
			var toy = new Gadget();

			// `name` is undefined, it's private
			console.log(toy.name); // undefined

			// public method has access to `name`
			console.log(toy.getName()); // "iPod"

			var myobj; // this will be the object
			(function () {
				// private members
				var name = "my, oh my";

				// implement the public part
				// note -- no `var`
				myobj = {
					// priviledged method
					getName:function () {
						return name;
					}
				};
			}());
		</script>
	</body>
</html>